import store from '@/store'

/**
 * 检查用户是否有指定权限
 * @param {string} permission 权限名称
 * @returns {boolean} 是否有权限
 */
export function hasPermission(permission) {
  const userInfo = store.state.user.userInfo
  const permissions = userInfo ? (userInfo.permissions || []) : []
  console.log('hasPermission - permissions:', permissions, 'checking permission:', permission)
  return permissions.includes(permission)
}

/**
 * 检查用户是否有指定角色
 * @param {string|Array} roles 角色名称或角色数组
 * @returns {boolean} 是否有角色
 */
export function hasRole(roles) {
  const userInfo = store.state.user.userInfo
  const userRole = userInfo ? userInfo.role : null
  console.log('hasRole - userRole:', userRole, 'checking roles:', roles)
  
  if (Array.isArray(roles)) {
    return roles.includes(userRole)
  }
  return userRole === roles
}

/**
 * 检查用户是否有指定权限或角色
 * @param {string} permission 权限名称
 * @param {string|Array} roles 角色名称或角色数组
 * @returns {boolean} 是否有权限或角色
 */
export function hasPermissionOrRole(permission, roles) {
  return hasPermission(permission) || hasRole(roles)
}

/**
 * 获取用户所有权限
 * @returns {Array} 权限列表
 */
export function getUserPermissions() {
  const userInfo = store.state.user.userInfo
  return userInfo ? (userInfo.permissions || []) : []
}

/**
 * 获取用户角色
 * @returns {string} 用户角色
 */
export function getUserRole() {
  const userInfo = store.state.user.userInfo
  return userInfo ? userInfo.role : null
}

/**
 * 刷新用户权限
 * @returns {Promise} 刷新结果
 */
export function refreshUserPermissions() {
  return store.dispatch('user/refreshUserInfo')
} 